package com.ntd.study.protocol.tcp;

/**
 * tcp 协议详解 - 传输控制协议，提供的是面向连接、可靠的字节流服务。
 * 当客户端和服务器彼此交换数据前，必须先在双方之间建立一个TCP连接，之后才能传输数据。
 * TCP提供超时重发、丢弃重复数据、检验数据、流量控制等功能，保证数据能从一端传到另一端
 *
 *
 *
 *
 * 三次握手进行连接
 * 1. 客户端 -> 服务器 ： SYN = 1，seq = x
 * 2. 服务器 -> 客户端 ： SYN = 1，ACK = 1，seq = y，ack = x + 1
 * 3. 客户端 -> 服务器 ： ACK = 1，seq = x + 1，ack = y + 1
 *
 * 四次挥手
 * 1. 客户端 -> 服务器 ： FIN = 1，seq = u
 * 2. 服务器 -> 客户端 ： ACK = 1，seq = v，ack = u + 1
 * 3. 服务器 -> 客户端 ： FIN = 1，ACK = 1，seq = w，ack = u + 1
 * 4. 客户端 -> 服务器 ： ACK = 1，seq = u + 1，ack = w + 1
 *
 * 协议状态
 * 客户端：SYN_SENT、FIN_WAIT1、FIN_WAIT2、CLOSING、TIME_WAIT
 * 服务端：LISTEN、SYN_RCVD、CLOSE_WAIT、LAST_ACK
 * 共有：CLOSE、ESTABLISHED
 *
 * TCP 长连接 - 建立一次连接进行多次数据发送
 * TCP 短连接 - 每次传输数据都需要进行重新连接和断开
 *
 * HTTP/1.0 默认使用短连接
 * HTTP/1.1 默认使用长连接 - keepalive
 *
 *
 *
 *
 */
public class StudyTCP {
}
